package org.epsi.blokus.joueur;

import java.util.logging.Level;
import java.util.logging.Logger;
import org.epsi.blokus.state.JeuState;
import org.epsi.blokus.tools.Log;
import org.newdawn.slick.SlickException;

/**
 * Adversaire en ligne
 * @author julien.lafont
 */
public final class OnlineOpponent extends Opponent {

    private boolean ready = false;
    private JeuState _jeuState = null;
    
    public OnlineOpponent(TTypePiece couleur) {
        super(couleur);
    }

    @Override
    public void isReady(String pseudo, String selectedAvatar) {
        super.isReady(pseudo, selectedAvatar);

        Log.out("OnlineOpponent : isReady");
        ready = true;
        
        // Relache le sémaphore
        semInitialisationJoueur.release();
        
    }

    @Override
    public boolean isReady() {
        return ready;
    }

    /**
     * Ajoute le coup de l'adversaire au plateau de jeu
     * @param x
     * @param y
     */
    public void ajouterCoup(int x, int y)
    {
        try {
            this.board.addPiece(x, y, couleur);
        } catch (SlickException ex) {
           System.err.println(ex.getMessage());
           Log.out("Impossible d'ajouter la pièce !");
        }
    }

    public void ajouterChat(String txt)
    {
        if (this._jeuState!=null) {
            this._jeuState.appendRowChat("chat"+this.couleur, txt);
            this._jeuState.textArea.validateLayout();
            this._jeuState.textAreaModel.domModified();
        }
    }


    @Override
    public void setChatState(JeuState state) {
        this._jeuState = state;
    }


 







}
